#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int Maxn=1e5+7;
int n,m,Q;
int c[Maxn],a[Maxn][7];
ll f[Maxn][7],val[Maxn][7],hah[7];
ll ans;

int main(){
    freopen("paint.in","r",stdin);
    freopen("paint.out","w",stdout);

    scanf("%d%d%d",&n,&m,&Q);
    for(int i=1;i<=n;i++) scanf("%d",&c[i]);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            scanf("%d",&a[i][j]);
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            val[j][i]=(val[j-1][i]+a[j][i]);
    
    for(int i=n;i;i--){
        f[i][c[i]]=hah[c[i]]-val[i-1][c[i]];
        for(int j=1;j<=m;j++) f[i][c[i]]=max(f[i][c[i]],f[i+1][j]+a[i][c[i]]);
        for(int j=1;j<=m;j++) hah[j]=max(hah[j],f[i][j]+val[i-1][j]);
    }
    printf("%lld\n",f[1][c[1]]);
    ans=f[1][c[1]];

    while(Q--){
        for(int i=1;i<=n+5;i++)
            for(int j=1;j<=m+5;j++)   
                f[i][j]=0,hah[j]=0;
        int opt,l,r;
        scanf("%d%d%d",&opt,&l,&r);
        l^=ans,r^=ans;
        if(opt==1){
            c[l]=r;
        }
        else{
            for(int i=r;i>=l;i--){
                f[i][c[i]]=hah[c[i]]-val[i-1][c[i]];
                for(int j=1;j<=m;j++) f[i][c[i]]=max(f[i][c[i]],f[i+1][j]+a[i][c[i]]);
                for(int j=1;j<=m;j++) hah[j]=max(hah[j],f[i][j]+val[i-1][j]);
            }
            ans=f[l][c[l]];
            printf("%lld\n",ans);
        }
        
    }

    // system("pause");
    return 0;
}
/*
3 2 4
2 1 2
4 4
2 4
3 1
2 8 10
1 11 8
2 10 10
1 0 0

*/